3D盒子碰撞在Unity游戏不工作,尽管



所以在我的游戏开发中,我正在制作一款网球游戏,我试图在玩家和网球之间开发一个盒子碰撞,但它不起作用,我添加了Rigidbody组件并勾选了isTrigger框,当我勾选了玩家和网球拍上的isTrigger框时,碰撞才会触发,但只有当我在游戏运行之前按下键时。然而,当我取消玩家和网球拍上的isttrigger框时,无论如何它都不会触发。这是我的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character : MonoBehaviour
{
public Leftmove left;
float speed = 3f;
float force = 10;
bool hit;
public Transform target;
// Start is called before the first frame update
void Start()
{

}
// Update is called once per frame
void Update()
{
Vector3 position = transform.position;
Vector3 positiont = target.position;
if (Input.GetKeyDown(KeyCode.F))
{
hit = true;
}
else if (Input.GetKeyUp(KeyCode.F))
{
hit = false;
}
if ((hit == true) && (Input.GetKey(KeyCode.LeftArrow)))
{
positiont.x += speed * Time.deltaTime;
}
if ((hit == true) && (Input.GetKey(KeyCode.RightArrow)))
{
positiont.x -= speed * Time.deltaTime;
}
if ((hit == true) && (Input.GetKey(KeyCode.UpArrow)))
{
positiont.z -= speed * Time.deltaTime;
}
if ((hit == true) && (Input.GetKey(KeyCode.DownArrow)))
{
positiont.z += speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow) && hit == false)
{
position.x += speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.RightArrow) && hit == false)
{
position.x -= speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.UpArrow) && hit == false)
{
position.z -= speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow) && hit == false)
{
position.z += speed * Time.deltaTime;
}
transform.position = position;
target.position = positiont;



}
private void CollisionTrigger(Collider other)
{
if (other.CompareTag("Tennis ball"))
{
Vector3 dir = target.position - transform.position;
other.GetComponent<Rigidbody>().velocity = dir.normalized * force;
}
}

}

你似乎缺乏碰撞在Unity中如何工作的基本知识。要使碰撞检测工作,您需要以下

  1. 一个非运动刚体
  2. 碰撞器附加到两个碰撞的游戏对象。

如果碰撞器不是触发器,则调用OnCollisionEnter函数。在触发的情况下OnTriggerEnter被调用。你可以阅读这篇关于Unity Colliders基础知识的文章来了解更多。

相关内容

最新更新