基于Unity3D的物体抛物线运动实现


本文主要涉及基于Unity3D的物体的抛物线运动实现。

方法 1:直接修改对象的Transform属性

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    void Start(){}

    void Update()
    {
        this.transform.position += Vector3.right * Time.deltaTime * 3;
        this.transform.position += Vector3.down * Time.deltaTime * 3;
    }
}

方法 2:使用向量Vector3的方法

我们将对象的最新位置用Vector3向量来表示,然后将这个向量赋给对象。
下面我们让对象水平方向匀速,垂直方向受重力(模拟)影响下落。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{

    float accumulateTime = 0;

    void Start(){}

    void Update()
    {
        accumulateTime += Time.deltaTime;
        //水平方向匀速运动
        float x = 5 * accumulateTime;
 
        //垂直方向重力加速度下落运动
        float y = 30 - 9.8f * 0.5f * Mathf.Pow(accumulateTime, 2);
 
        Vector3 pos = new Vector3(x, y, 0);
        if (pos.y >= 0)
        {
            transform.position = pos;
        }
    }
}

方法 3:通过Rigidbody组件移动物体

Rigidbody组件可以让对象受物理引擎的控制。
我们可以开启重力作用,并赋予物体一个水平速度,从而实现抛物线运动。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody))]

public class Move : MonoBehaviour
{
    private Rigidbody rigidbody;
    private Vector3 initSpeed;

    void Start()
    {
        rigidbody = this.GetComponent<Rigidbody> ();
        initSpeed = new Vector3 (3, 0, 0);
        rigidbody.velocity = initSpeed;
    }

    void Update(){}
}

方法 4:通过CharacterController组件移动物体

CharacterController,即角色控制器,我们可以用其提供的Move方法来实现抛物线运动。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(CharacterController))]

public class Move : MonoBehaviour
{
    private CharacterController cc;
    private Vector3 speed;

    void Start()
    {
        cc = this.GetComponent<CharacterController> ();
        speed = new Vector3 (5, 0, 0);
    }

    void Update()
    {
        speed += 3 * Time.deltaTime * Vector3.down;
        cc.Move (speed * Time.deltaTime);
    }
}

本人的“3D游戏编程与设计”系列合集,请访问:
https://www.yizuodi.cn/category/3DGame/

声明:一座堤的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 基于Unity3D的物体抛物线运动实现


为者常成 行者常至