[英]Character rotation and move to mouse click point with speed
我需要在2D游戏项目中模拟角色的正向旋转。
我试图创建我的运动脚本,但是它并不完美。 原因是我的2D演员是太空飞船,它无法绕他的轴旋转,但我只需要向前旋转即可。
这是运动的两个部分。
所以。 我使用Unity引擎。 需要一些说明才能发布它。
谢谢!
UPD:我当前的源代码:
using UnityEngine; using System.Collections; public class Move : MonoBehaviour { public float speed = 1.5f; public float rotationSpeed = 90f; private Vector3 pos; private Quaternion qTo; void Start () { pos = transform.position; qTo = transform.rotation; } void Update () { if (Input.GetMouseButtonDown(0) || Input.GetMouseButton(0)) { pos = Input.mousePosition; pos.z = transform.position.z - Camera.main.transform.position.z; pos = Camera.main.ScreenToWorldPoint(pos); } var dir = pos - transform.position; if (dir != Vector3.zero) { qTo = Quaternion.LookRotation(Vector3.forward, pos - transform.position); transform.rotation = Quaternion.RotateTowards (transform.rotation, qTo, Time.deltaTime * rotationSpeed); } transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed); } }
尝试这个:
var dir = pos - transform.position;
qTo = Quaternion.LookRotation(Vector3.forward, pos - transform.position);
if (Quaternion.Angle(transform.rotation, qTo) >= rotPrecision) //just set your own precision
transform.rotation = Quaternion.RotateTowards(transform.rotation, qTo, Time.deltaTime * rotationSpeed);
if(Vector3.Distance(transform.position,pos) > movePrecision) // 0.1f
transform.Translate(Vector3.up * speed * Time.deltaTime);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.