Unity3D角色控制器通过脚本设置速度?
Posted
技术标签:
【中文标题】Unity3D角色控制器通过脚本设置速度?【英文标题】:Unity3D Character Controller set speed through script? 【发布时间】:2016-05-17 03:23:16 【问题描述】:如何在Void FixedUpdate
中设置前进和后退的速度?或者有没有更好的方法来做到这一点?不过我需要使用角色控制器。
using UnityEngine;
using System.Collections;
public class CharacterControllerz : MonoBehaviour
public float speed;
private CharacterController playerController;
void Start()
playerController = GetComponent<CharacterController>();
void Update()
void FixedUpdate()
if (Input.GetKey("right"))
playerController.Move (Vector3.forward);
Debug.Log ("RIGHT");
if (Input.GetKey("left"))
playerController.Move (Vector3.back);
Debug.Log ("LEFT");
playerController.Move (Vector3.left);
【问题讨论】:
您的游戏对象是否只有一个 CharacterController 或 FPC 脚本? 这是检查员的样子:prntscr.com/a048dt。 Speed float 根本没有被使用,所以不用担心。 好的,请问您为什么不用Unity标准资源(其中包括CC和FPC)? 角色控制器有那么难用吗?我只希望我的角色在按下按钮时左右移动并始终向前。它是无尽的跑步者。我来看看标准资产。 【参考方案1】: public float speed = 5f;
public float jumpStrenght = 8f;
public float gravity = 20f;
private Vector3 moveDirections = new Vector3();
private Vector3 inputs = new Vector3();
void FixedUpdate()
CharacterController cc = GetComponent<CharacterController>();
if (cc.isGrounded)
if (Input.GetKey("right"))
inputs.z = 1;
if (Input.GetKey("left"))
inputs.z = -1;
if (Input.GetKey("up"))
inputs.y = jumpStrenght;
moveDirections = transform.TransformDirection(inputs.x, 0, inputs.z) * speed;
moveDirections.y = inputs.y - gravity;
cc.Move(moveDirections * Time.deltaTime);
我认为这就是您想要的,但您可能必须切换轴。
编辑:为什么要使用 TransformDirection?因为我们想要将对象移动到不应该与对象旋转相关的方向上。
【讨论】:
您应该将 GetComponent 放在 Start 中,这样它只会执行一次。您也可以使用 Input.GetAxis 而不是检查左右(顺便说一句,如果/否则如果,如果你向左走,你就不会向右走)。最后,您的 y 轴被阻尼两次,因为您将 y 值乘以 deltaTime 两次。我猜你想模糊导致文档的轨道:)。 这只是一个示例函数,当他使用get key时,这个函数也使用它(请在检查答案之前阅读问题)。 好的,您能解释一下 TransformDirection 的作用以及为什么在这里使用它吗?为什么不使用 transform.forward 代替。应该在常见问题解答中解释他的答案。此外,你的重力不会被应用,因为只有在接地时,这个家伙才会飞。 我还应该解释为什么我使用 Vector3 而不是 Vector2 进行移动,或者为什么使用浮动而不是加倍?..... 不,你现在很好。进行了两三个编辑,但最终你做到了。你不是自己做的,但很好。您可能会获得声望奖励。下一次,当有人只是想帮助你时,你应该只听听(我真的只是想改善你的答案,否则我可能会否决它),并在你明显表现出缺乏编码信心时避免聪明的语气和知识。我们随时为您提供帮助。以上是关于Unity3D角色控制器通过脚本设置速度?的主要内容,如果未能解决你的问题,请参考以下文章
unity3d 有个官方的车的例子 速度为啥乘2.23693629?