繁体   English   中英

角色旋转并快速移动到鼠标点击点

[英]Character rotation and move to mouse click point with speed

我需要在2D游戏项目中模拟角色的正向旋转。

我试图创建我的运动脚本,但是它并不完美。 原因是我的2D演员是太空飞船,它无法绕他的轴旋转,但我只需要向前旋转即可。

在此处输入图片说明

这是运动的两个部分。

  • Actor必须向前旋转并向后旋转(半径必须为最佳或预定义)。
  • 演员必须使用鼠标点击位置直线前进。

所以。 我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM