C# 对象在试图从屏幕边缘反弹时被卡住,我做错了吗? 公共类:单一行为 { 公共矢量2速度; 公共矢量2方向; 私人矢量2运动; 私人向量机3上信标; 私有向量3底部屏幕绑定; //用于初始化 void Start() { TopScreenBound=Camera.main.ViewportToWorldPoint(新矢量3(0f、1f、0f)); BottomScreenBound=Camera.main.ViewportToWorldPoint(新矢量3(0f,0f,0f)); } //每帧调用一次更新 无效更新() { if(gameObject.transform.position.y>=TopScreenBound.y) { 方向y*=-1; } 如果(gameObject.transform.position.y
您必须固定对象的位置以在屏幕内反弹,如果您的对象已经在屏幕外,并且在下一帧中没有完全进入屏幕空间,那么您的对象将无限地改变其方向,直到它进入或离开屏幕 更改此项:C# 对象在试图从屏幕边缘反弹时被卡住,我做错了吗? 公共类:单一行为 { 公共矢量2速度; 公共矢量2方向; 私人矢量2运动; 私人向量机3上信标; 私有向量3底部屏幕绑定; //用于初始化 void Start() { TopScreenBound=Camera.main.ViewportToWorldPoint(新矢量3(0f、1f、0f)); BottomScreenBound=Camera.main.ViewportToWorldPoint(新矢量3(0f,0f,0f)); } //每帧调用一次更新 无效更新() { if(gameObject.transform.position.y>=TopScreenBound.y) { 方向y*=-1; } 如果(gameObject.transform.position.y,c#,unity3d,collision,game-physics,C#,Unity3d,Collision,Game Physics,您必须固定对象的位置以在屏幕内反弹,如果您的对象已经在屏幕外,并且在下一帧中没有完全进入屏幕空间,那么您的对象将无限地改变其方向,直到它进入或离开屏幕 更改此项: public class AsteroidMovement : MonoBehaviour { public Vector2 speed; public Vector2 direction; private Vector2 movement; private Vector3 TopScreenBound; private Vect
public class AsteroidMovement : MonoBehaviour
{
public Vector2 speed;
public Vector2 direction;
private Vector2 movement;
private Vector3 TopScreenBound;
private Vector3 BottomScreenBound;
// Use this for initialization
void Start()
{
TopScreenBound = Camera.main.ViewportToWorldPoint(new Vector3(0f, 1f, 0f));
BottomScreenBound = Camera.main.ViewportToWorldPoint(new Vector3(0f, 0f, 0f));
}
// Update is called once per frame
void Update()
{
if (gameObject.transform.position.y >= TopScreenBound.y)
{
direction.y *= -1;
}
if (gameObject.transform.position.y <= BottomScreenBound.y)
{
direction.y *= -1;
}
movement = new Vector2(speed.x * direction.x, speed.y * direction.y);
}
void FixedUpdate()
{
rigidbody2D.velocity = movement;
}
}
if(gameObject.transform.position.y>=TopScreenBound.y)
{
方向y*=-1;
}
if(gameObject.transform.position.y=TopScreenBound.y)
{
gameObject.transform.position.y=TopScreenBound.y;
方向y*=-1;
}
如果(gameObject.transform.position.y)被“卡住”在墙上,你的意思是它碰到了一些魔法屏障并在墙的边界处快速来回反弹?
if (gameObject.transform.position.y >= TopScreenBound.y)
{
direction.y *= -1;
}
if (gameObject.transform.position.y <= BottomScreenBound.y)
{
direction.y *= -1;
}
if (gameObject.transform.position.y >= TopScreenBound.y)
{
gameObject.transform.position.y = TopScreenBound.y;
direction.y *= -1;
}
if (gameObject.transform.position.y <= BottomScreenBound.y)
{
gameObject.transform.position.y = BottomScreenBound.y;
direction.y *= -1;
}