C# 改变重力的方向
在我的游戏中,通常情况下,当按下空格键时,玩家会上升,如果不按下空格键,玩家会下降。我的目标是:当玩家与特定物体碰撞时,重力应该以相反的方式作用,当我们按下空格键时,玩家应该下降(10秒)。这是我向上移动播放器的代码:C# 改变重力的方向,c#,unity3d,game-development,C#,Unity3d,Game Development,在我的游戏中,通常情况下,当按下空格键时,玩家会上升,如果不按下空格键,玩家会下降。我的目标是:当玩家与特定物体碰撞时,重力应该以相反的方式作用,当我们按下空格键时,玩家应该下降(10秒)。这是我向上移动播放器的代码: public void Update(){ Vector2 vel=rb.velocity; float ang = Mathf.Atan2(vel.y,10)*Mathf.Rad2Deg; transform.rotation = Quaternio
public void Update(){
Vector2 vel=rb.velocity;
float ang = Mathf.Atan2(vel.y,10)*Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0,0,ang));
if(Input.GetKey(KeyCode.Space)){
rb.AddForce(Vector2.up*gravity*Time.deltaTime*2000f);
}
在不太了解代码结构的情况下,或许我可以提出如下建议:
public class GameEngine
{
private double gravity = 9.81;
private void GravityFlip_Event(object sender, EventArgs e)
{
InvertGravity();
Task.Run(() => InvertGravity(10));
}
private void InvertGravity(int delaySeconds = 0)
{
Thread.Sleep(delaySeconds * 1000);
gravity = 0 - gravity;
}
}
当“玩家与特定对象碰撞”时,调用GravityFlip\u事件
。这将首先使用即时事件“翻转重力”,然后使用所需长度的延迟调用任务;然后把它翻回去
更好的方法可能是创建一个“effects”类,该类可以以您可能喜欢的任何其他方式修改环境,可能基于
系统.Timers.Timer
10秒后,控件应正常工作应为-gravity
的简单情况,否?好的,那么我怎样才能使运动产生相反的效果?我怎样才能使运动持续10秒如果你还有其他问题,或者改变你的问题,或者问一个新问题,那不是什么评论什么是对象发送者和e?它们是标准的事件参数:发送者
,引发事件的对象
,而e
是EventArgs
,是关于事件的附加信息。根据您的代码,它们不必存在。你没有提供太多的信息。@Iyona帮你做了这项工作?如果是,请将问题标记为已回答。