導入
Unity、マウスをスライドさせてキャラクターを回転させるにはどうすればよいですか?
方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class PlayerMovement : MonoBehaviour
{
public float speed = 6f; // 玩家移动速度
private Vector3 movement; // 玩家的移动方向
private Animator playerAC; // 玩家的动画控制器
private Rigidbody playerRigidbody; // 玩家的刚体组件
LayerMask floorMask;
// 初始化
void Start()
{
// 获取动画控制器和刚体组件
playerAC = GetComponent<Animator>();
playerRigidbody = GetComponent<Rigidbody>();
floorMask = LayerMask.GetMask("floor");
}
// 固定时问见新
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
// 移动 横向 和纵向
Move(h, v);
// 检测是否在移动,播放相应动画
Animating(h, v);
turning();
}
// 检测是否在移动,播放相应动画
void Animating(float h, float v)
{
// 只有h不等于0或者v不等于0才应该是移动
bool walking = h != 0f || v != 0f;
playerAC.SetBool("iswalking", walking);
}
// 移动
void Move(float h, float v)
{
// 设置移动的方向向量
movement.Set(h, 0f, v);
movement = movement.normalized * speed * Time.deltaTime;
// 使用Rigidbody组件移动玩家
playerRigidbody.MovePosition(transform.position + movement);
}
void turning()
{
Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit cameraHit;
if (Physics.Raycast(cameraRay, out cameraHit, 100f, floorMask))
{
Vector3 playerToMouse = cameraHit.point - transform.position;
playerToMouse.y = 0f;
Quaternion newQuaternion = Quaternion.LookRotation(playerToMouse);
playerRigidbody.MoveRotation(newQuaternion);
}
}
}
このコードはプレイヤーの動きを実現するためのUnityエンジンをベースとしたスクリプトであり、主な機能は以下の通りです。
- 変数を定義して初期化します。
- 速度: プレイヤーの移動速度。
- 移動: プレイヤーの移動方向。
- playerAC: プレーヤーのアニメーション コントローラー。
- playerRigidbody: プレーヤーの剛体コンポーネント。
- FloorMask: 光線検出用の床レイヤー。
- 移動と回転を実装します。
- Move() 関数: 水平入力と垂直入力を受け取り、プレーヤーの移動方向ベクトルを設定し、Rigidbody コンポーネントを使用してプレーヤーを移動します。
- Turning() 関数: レイを使用して床を検出し、プレーヤーが向く必要がある位置を取得し、Rigidbody コンポーネントを使用してプレーヤーを回転します。
- アニメーションを再生する:
- Animating() 関数: プレーヤーが動いているかどうかに応じて iswalking ブール変数を設定し、それをアニメーション コントローラーに渡して、対応するアニメーションを制御します。
- プレーヤーの入力に応答する:
- FixedUpdate() 関数: 固定の物理計算時間間隔内でプレーヤーの入力を検出し、Move() 関数を呼び出してプレーヤーを移動し、Animating() 関数を呼び出して対応するアニメーションを再生し、turning() 関数を呼び出してプレーヤーを回転させます。プレーヤー。
このコードは、キーボード入力に基づいてプレーヤーの移動と回転を実装し、プレーヤーが動いているかどうかに基づいてアニメーションを再生します。