用鼠标点击将玩家旋转90度
本文关键字:玩家 旋转 90度 鼠标 | 更新日期: 2023-09-27 18:08:44
我正在制作一款简单的跑步游戏,我试图让玩家在点击鼠标时转动90度,然后朝那个方向跑。所以如果你是直线跑,点击鼠标你现在是向左跑。等。玩家跑起来,当我点击鼠标按钮时,他会转身,但第一次是90度,第二次是60度,然后第三次是90度,最后第四次是60度。我的问题是;根据这段代码判断,为什么其中两个点击输出90度,而另外两个则不是?尽管每次点击都是基于相同的代码。此外,如果我可以优化我的代码任何,将非常感激。这是我第一次尝试这样做一个系统。注意:
controller.Move (moveVector * Time.deltaTime);// Move the player
transform.Translate (moveVector * (speed) * Time.deltaTime); // Move on player axis instead of world axis.
都被使用,因为只有控制器。移动我的球员只跑直线只有变换。翻译我的球员永远掉在地上。下面是我到目前为止的代码:
using UnityEngine;
using System.Collections;
public class PlayerMotor : MonoBehaviour
{
private CharacterController controller;
private Vector3 moveVector;
private float speed = 2.0f;
private float verticalVelocity = 0.0f;
private float gravity = 12.0f;
void Start()
{
controller = GetComponent<CharacterController> ();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
transform.Rotate(new Vector3(0, -90, 0));
}
moveVector = Vector3.forward;
if (controller.isGrounded)
{
verticalVelocity = -0.5f;
}
else
{
verticalVelocity -= gravity * Time.deltaTime;
}
moveVector.x = Input.GetAxisRaw ("Horizontal") * speed;
moveVector.y = verticalVelocity;
moveVector.z = speed;
controller.Move (moveVector * Time.deltaTime);
transform.Translate (moveVector * (speed) * Time.deltaTime);
}
}
玩家的旋转与玩家的移动方式无关。实际的移动路径仅由玩家和moveVector
的位置决定。
只有控制器。移动我的球员只跑直线。
这是因为moveVector总是(0.0,-0.5,2.0)。
如果我没弄错的话,你希望玩家朝着它面对的方向移动,对吗?你可以使用如下所示的moveVector来实现。
moveVector.x = transform.forward.x * speed;
moveVector.y = verticalVelocity;
moveVector.z = transform.forward.z * speed;
删除transform.Translate
行