Unity3D中的空间与运动

本文探讨了Unity3D中游戏对象运动的本质,通过三种方式实现物体的抛物线运动,并详细介绍了如何编程模拟一个太阳系,包括星球的公转和自转,其中星球转速不同且不在同一法平面上。此外,文章还提到了游戏设计的相关实践,如Priests and Devils游戏的模型、动作表、预制对象以及MVC架构的应用。
摘要由CSDN通过智能技术生成

1.简答并用程序验证

游戏对象运动的本质是什么

游戏对象的空间属性在同一个坐标系下随每一帧的变化。这里的空间属性是指transform中的position和rotation属性,即位置参数和旋转参数,运动可以看成是这些数值的改变。

请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…)
  1. 分别在两个方向上改变transform中的position属性
    计算出x方向和y方向的位移改变量,然后position在两个方向上分别加上改变量即可
    public float v_x0 = 1.0f;
    public float v_y0 = 0.5f;
    public float t = 0f;
    
    void Update () {
   
    	Debug.Log("Update");
    	t += (float)Time.deltaTime;
    	float delta_x = (float)(v_x0 * t);
    	float delta_y = (float)(v_y0 * t - 0.5 * 2 * t * t);
    	
    this.transform.position += Vector3.left * delta_x;
    this.transform.position += Vector3.up * delta_y;
    
    }
  1. 直接使用一个Vector3改变position
    public float v_x0 = 1.0f;
    public float v_y0 = 0.5f;
    public float t = 0f;
    
    // Update is called once per frame
    void Update () {
   
    	Debug.Log("Update");
    	t += (float)Time.deltaTime;
    	float delta_x = (float)(v_x0 * t);
    	float delta_y = (float)(v_y0 * t - 0.5 * 2 * t * t);
        //上面部分相同
        this.transform.position += new Vector3(delta_x, delta_y, 0);
    }
  1. 使用translate函数
    1、2中的方法是直接让position加上改变量的Vector3;这里的方法是将这个改变量的Vector3作为参数传入Translate函数中
    public float v_x0 = 1.0f;
    public float v_y0 = 0.5f;
    public float t = 0f;
    
    // Update is called once per frame
    void Update () {
   
    	Debug.Log("Update");
    	t += (float)Time.deltaTime;
    	float delta_x = (float)(v_x0 * t);
    	float delta_y = (float)(v_y0 * t - 0.5 * 2 * t * t)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值