我想将对象的位置更改为鼠标的位置,从第一个位置缓慢移动到第二个位置。
我的物体缓慢移动到随机方向,似乎与左下角相连。当我高于角落时,我的物体向上移动,左右相同。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rocket : MonoBehaviour
{
public float speed = 10f;
private Vector3 shippos;
void Start()
{
shippos = transform.position;
}
void FixedUpdate()
{
if (Input.mousePosition.x > shippos.x)
shippos.x=shippos.x+speed*Time.deltaTime;
if (Input.mousePosition.x < shippos.x)
shippos.x=shippos.x-speed*Time.deltaTime;
if (Input.mousePosition.y > shippos.y)
shippos.y=shippos.y+speed*Time.deltaTime;
if (Input.mousePosition.y < shippos.y)
shippos.y=shippos.y-speed*Time.deltaTime;
transform.position = shippos;
}
}
答案 0 :(得分:3)
鼠标位置以屏幕空间坐标返回。你需要做的是将它转换为世界坐标,以便在与变换(shippos)相同的坐标空间中进行比较。
void FixedUpdate()
{
if (Camera.main.ScreenToWorldPoint(Input.mousePosition).x > shippos.x)
shippos.x = shippos.x + speed * Time.deltaTime;
if (Camera.main.ScreenToWorldPoint(Input.mousePosition).x < shippos.x)
shippos.x = shippos.x - speed * Time.deltaTime;
if (Camera.main.ScreenToWorldPoint(Input.mousePosition).y > shippos.y)
shippos.y = shippos.y + speed * Time.deltaTime;
if (Camera.main.ScreenToWorldPoint(Input.mousePosition).y < shippos.y)
shippos.y = shippos.y - speed * Time.deltaTime;
transform.position = shippos;
}
答案 1 :(得分:0)
如果我没有误解,你想把你的玩家的位置直接改变到鼠标的位置并朝向鼠标。
void Update() {
Transform target = mousePosition; //get your mouse position per frame
Vector3 relativePos = target.position - transform.position; //create a vector3 between them
Quaternion rotation = Quaternion.LookRotation(relativePos); //then give a rotation your player towards this vector.
transform.rotation = rotation; //and apply it.
}
答案 2 :(得分:0)
从这里采取:http://answers.unity3d.com/questions/633873/how-to-make-an-object-move-towards-the-mouse-point.html
<bean id="date" class="java.util.Date" scope="prototype"/>
可能不准确C#,但你明白了。
答案 3 :(得分:0)
我猜你做错了,因为你有 Mathf.Lerp 你不需要像那种笨拙的方式去做 以下是youtube上针对 mathf.lerp
的视频教程
这是基本代码:
someValue = Mathf.Lerp(initialValue , finalValue , Time.deltaTime * smoothness);
只需看看youtube链接,您一定会明白这一点!
作为侧面说明
你不需要做很多东西来减少你的游戏性能!小心这种编码!