欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity3d之物体运动(一)

程序员文章站 2022-07-12 23:30:33
...

在游戏场景中使物体运动的方式,我目前是找到了两种方法。
如果你会其他的方法,欢迎在评论区里交流。

一、利用transform

API传送门:
https://docs.unity3d.com/ScriptReference/Transform.html

方法没只截取一部分,不要求全会,看别的教程时,用哪个会哪个就行 。
Unity3d之物体运动(一)

1.旋转运动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player1 : MonoBehaviour {

	// Use this for initialization
	void Start () {
	}
	
	// Update is called once per frame
	void Update () {
	//创建一个三维向量
	//使物体围绕y轴持续旋转
    	transform.Rotate(new Vector3(0.0f,2.0f,0.0f));  
	}
}

Unity3d之物体运动(一)

transform:

物体的位置、旋转和尺度。

场景中的每一个物体都有一个变换。它用来存储和操作物体的位置、旋转和比例。

transform.Rotate:

使用Transform.Rotate以多种方式旋转游戏对象。旋转通常作为欧拉角,而不是四元数。

2.前(后左右)移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player1 : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {
        //new 一个三维向量
        //使物体持续沿x(对应改变向量中的值)轴正方向移动
        //数值越大移动速度越快
        transform.Translate(new Vector3(0.3f, 0.0f, 0.0f));
    }
}

Unity3d之物体运动(一)

二、利用刚体

刚体:使物体具有物理的性质,例如使物体具有重力,摩擦力等。

刚体的创建 :
1.先在Hierarchy面板中创建一个物体
2.在Add Component中搜索"Rigidbody"并添加
Unity3d之物体运动(一)
Unity3d之物体运动(一)
注意:1.要在游戏物体的下面建一个平面,不然游戏物体有了重力的物理性质,会一直下坠。
2.要是Sphere类型 物体,不然会报错。

Unity3d之物体运动(一)

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

public class Player1 : MonoBehaviour {

    private Rigidbody rd;      //创建一个刚体类型的对象
	// Use this for initialization
	void Start () {
        rd = GetComponent<Rigidbody>();     //得到当前物体的刚体组件属性,并赋值给rd
	}
	
	// Update is called once per frame
	void Update () {
        //AddForce()相当于给物体一个力,使物体进行运动
        //新建一个向量相当于力的方向,并设置力的大小
        //数值越大,运动越快
        rd.AddForce(new Vector3(1, 0, 0));   
	}
}

Unity3d之物体运动(一)

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

public class Player1 : MonoBehaviour
{

    private Rigidbody rd;      //创建一个刚体类型的对象
                               // Use this for initialization
    void Start()
    {
        rd = GetComponent<Rigidbody>();     //得到当前物体的刚体组件属性,并赋值给rd
    }

    // Update is called once per frame
    void Update()
    {
        //AddForce()相当于给物体一个力,使物体进行运动
        
        rd.AddForce(transform.forward * 1.0f);
    }
}

Unity3d之物体运动(一)
GetComponent<要检索的组件类型>()

AddForce

  • 向刚体添加力,力是沿着force矢量。指定作用力模式 mode允许将力的类型改变为加速度、脉冲或速度变化。
  • 作用力计算FixedUpdate或者通过显式调用Physics.Simulate方法。
  • force只能适用于一个活跃的刚体。如果游戏对象是非活动的,则AddForce没有任何效果(例如正方体)。而且,刚体不可能是运动学的。
  • 默认情况下,一旦施加了force,刚体的状态将被设置为“awake”,除非该力是Vector3.zero.
相关标签: Unity 3D