【发布时间】:2015-05-09 08:24:35
【问题描述】:
我编写了一个脚本,仅当鼠标在对象上时才在 y 轴上上下移动对象。我正在使用光线投射,我可以使用名称并区分每个对象。但是,当我尝试在光线投射时添加力时,所有带有脚本的对象都会移动。有谁知道这是为什么?
using UnityEngine;
using System.Collections;
public class BlockMove : MonoBehaviour
{
private bool dragOccuring = false;
private Vector3 lastMousePosition = Vector2.zero;
private float amountToMove = 0;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Input.GetMouseButtonDown (0) == true) {
dragOccuring = true;
if (Physics.Raycast (ray, out hit)) {
print (hit.collider.gameObject.name);
lastMousePosition = Input.mousePosition;
}
} else if (Input.GetMouseButton (0) == true) {
ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit)) {
print (hit.collider.gameObject.name);
Vector3 mousePosition = Input.mousePosition;
Rigidbody rigidbody = GetComponent<Rigidbody> ();
if (lastMousePosition.y > mousePosition.y){
rigidbody.AddForce (0, -Input.mousePosition.y, 0);
} else if (lastMousePosition.y == mousePosition.y){
rigidbody.AddForce (0, 0, 0);
}
else{
rigidbody.AddForce (0, Input.mousePosition.y, 0);
}
lastMousePosition = mousePosition;
}
} else if (Input.GetMouseButtonUp (0) == true) {
dragOccuring = true;
lastMousePosition = Vector3.zero;
}
}
}
【问题讨论】: