Unity2017官方案例Roll_Ball 浅析学习

来源:互联网 发布:淘宝买家秀大尺度网站 编辑:程序博客网 时间:2024/06/11 19:46

Unity2017官方案例Roll_Ball 浅析学习

  1. 案例中相机跟随Player设置方法:①将MainCamera设置为Player的子物体(一旦Player旋转,相机也会随之旋转)②编写脚本CameraControl.cs。
public class CameraController : MonoBehaviour {    public GameObject player;    private Vector3 offset;    void Start () {        offset = transform.position - player.transform.position;    }    void LateUpdate () {        transform.position = player.transform.position + offset;    }}

引申:unity第一人称视角设置方法:①Import Package -> Charactor,使用预设。②为游戏对象设置第三人称方法http://blog.csdn.net/a18779148177/article/details/74728380

2.Player移动方法Rigidbody.AddForce

public class PlayerController : MonoBehaviour {    public float speed;    private Rigidbody rb;`void Start () {        rb = GetComponent<Rigidbody> ();    }    void FixedUpdate(){        float moveHorizontal = Input.GetAxis ("Horizontal");        float moveVertical = Input.GetAxis ("Vertical");        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);        rb.AddForce (movement * speed);    }    }

①Edit->project settings->Input 打开 InputManager(Unity3D Input按键系统)。Horizontal 和 Vertical被映射到w, a, s, d键和方向键。其余Fire1,Fire2等默认输入轴映射见之。
参考:http://www.cnblogs.com/fortomorrow/archive/2012/11/01/unity08.html
②Rigidbody.AddForce()有四种重载方式,AddForce(Vector3 Force/Vector3 Force,ForceMode mode/float x,float y,float z/float x,float y,float z,ForceMode mode),案例使用第一种。

ForceMode为枚举类,下有Acceleration(加速度),Force(真实的物理力),Impulse(冲击力,瞬间发生的力),VelocityChange(忽略重量的速度变化力)

其他方式如下:①rb.AddForce(movement,ForceMode.Force);
②rb.AddForce(moveHorizontal,0.0f,moveVertical);
③rb.AddForce(moveHorizontal,0.0f,moveVertical,ForceMode.Force);

另附unity物体简单移动方法:http://www.jianshu.com/p/12f656c29a36

3.物体旋转方法以及pickup被碰撞就消失方法:

public class Rotator : MonoBehaviour {    // Use this for initialization    void Start () {    }    // Update is called once per frame    void Update () {        transform.Rotate (new Vector3 (15, 30, 45) * Time.deltaTime);    }}

将pickup的IsTrigger(触发模式)勾选并标记Tag为‘“pickup”,在PlayerController脚本补充

void OnTriggerEnter(Collider other)    {        if(other.CompareTag("pickup"))        {            other.gameObject.SetActive (false);        }    }

另一种方法是在pickup挂载的Rotato脚本补充

void OnTriggerEnter(Collider other)    {            this.gameObject.SetActive (false);            //Collider.Destroy (this.gameObject);让物体消失还有多种方法        }

OnTriggerEnter(Collider ):当进入触发范围;OnTriggerExit(Collider ):当离开触发范围;OnTriggerStay(Collider ):在触发范围内。

4.调整Text方位要先按shift+alt键

原创粉丝点击