我正在制作一个统一的游戏,用户拖动鼠标向远处的一些物体投球。到目前为止,我有这个DragAndShoot脚本:
//using System.Collections;
//using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(Collider))]
public class DragAndShoot : MonoBehaviour
{
public Transform prefab;
private Vector3 mousePressDownPos;
private Vector3 mouseReleasePos;
private Rigidbody rb;
private bool isShoot;
void Start()
{
rb = GetComponent<Rigidbody>();
}
private void OnMouseDown()
{
mousePressDownPos = Input.mousePosition;
}
private void OnMouseUp()
{
mouseReleasePos = Input.mousePosition;
Shoot(mouseReleasePos-mousePressDownPos);
}
private float forceMultiplier = 3;
void Shoot(Vector3 Force)
{
if(isShoot)
return;
rb.AddForce(new Vector3(Force.y,Force.x,Force.z) * forceMultiplier);
isShoot = true;
createBall();
}
void createBall(){
Instantiate(prefab, GameObject.Find("SpawnPoint").transform.position, Quaternion.identity);
}
}
正如你所看到的,我制作了createBall((函数,以便在游戏对象SpawnPoint的位置重新生成一个预制球。当我进行比赛时,第一个球射得很好。另一个球重生了。
问题:当我投第二个球时,它移动了,不知怎么的,第二个似乎又出现了一个球,它也移动了。不知道为什么会发生这种情况,以及如何解决——有人能帮忙吗?谢谢
问题是您需要销毁((首先抛出的游戏对象。由于您只是在再次单击时将对象带回,因此以下是您应该做的:
使其破坏旧对象。因为你只是不断地实例化对象,然后当你再次抛出它时,它也会抛出旧的。如果你理解我的意思,那么希望你能把它变成你想要的。(不太清楚你的游戏是什么;这就是我的解释(