Unity 3D作业三:空间与运动

本文介绍了游戏开发中物体运动的实现方法,包括使用Vector3改变Position、利用Translate方法及直接计算并赋值Position来实现抛物线运动,并提供了具体的Unity代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

中山大学数据科学与计算机学院3D游戏课程学习记录博客。

简答题

  • 游戏对象运动的本质是什么?
    运动的本质就是游戏对象位置、角度和形状的改变。

  • 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…)

  1. 使用Vector3改变Position:
    代码如下:
     private float v=0.1f;    
     private float a=0.05f;
     void Update()    {        
         this.transform.position+=Vector3.right*v*Time.time;        
         this.transform.position+=Vector3.down*a*Time.time*Time.time;    
    }
水平方向为匀速运动,竖直方向为匀加速运动。
v代表水平方向的速度,a代表竖直方向的加速度。
  1. 使用Translate:
    代码如下:
    private float v=0.1f;    
    private float a=0.05f;    
    void Update()    {        
    	transform.Translate(Vector3.right*v*Time.fixedTime,Space.World);        
    	transform.Translate(Vector3.down*a*Time.fixedTime*Time.fixedTime,Space.World);    
    }
  1. 计算运动过程中的position直接赋值:
    代码如下:
    private float vx=1f;    
    private float vy=0f;    
    void Update()    {        
    	vy+=0.001f;        
    	Vector3 newPosition=new Vector3(Time.deltaTime*vx,-vy*Time.deltaTime,0);        
    	transform.position+=newPosition;    
    }
vx代表水平方向的速度,vy代表竖直方向的速度。

编程练习

思考题

  • 使用向量与变换,实现并扩展 Tranform 提供的方法,如 Rotate、RotateAround 等
  • 使用向量与变换实现RotateAround:
void RotateAround(Transform t,Vector3 center,Vector axis,float angle){		
    var rot=Quaternion.AngleAxis(angle,axis);
    t.position=(center+(t.position-center)*rot);
    t.rotation=t.rotation*rot;
}
  • 使用向量与变换实现Rotate:
void Rotate(Transform t,Vector3 axis,float angle){ 
    var rot=Quaternion.AngleAxis(angle,axis);
    t.rotation*=rot;
}
其中position表示物体的位置,rotation表示物体的角度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值