Unity3D之大戰玩具殭屍(二)鼠標控制,wasd控制,添加移動動畫,攝像機跟隨角色,不穿模,怪物跟隨,敵人自動尋路,上帝視角

給Zombunny加一個tag,腳本用

 p3玩家可以圍着Zombunny轉,僅僅是演示

p4鼠標控制player轉向,wasd控制移動

添加quad改名爲floor,鼠標每次點擊會落到floor上(腳本實現)

添加layer的floor

並移除floor的component

 寫floor的腳本

 

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

public class PlayerMovemment : MonoBehaviour
{
    public float speed = 6f;
    Rigidbody playerRigidbody;
    int floorMask;
    //Transform enemyTransform;
    Animator animator;

    private void Awake() // 加載腳本實例調用Awake
    {
        playerRigidbody = GetComponent<Rigidbody>(); // MonoBehaviour中定義的方法GetComponent找到有Rigidbody的遊戲對象
        floorMask = LayerMask.GetMask("Floor");
        //var enemy = GameObject.FindGameObjectWithTag("Zombunny");
        //enemyTransform = enemy.transform; // 通過tag獲取enemy的Transform
        animator = GetComponent<Animator>();
    }

    private void FixedUpdate()         // 固定方法名,時刻調用MonoBehaviour更新遊戲畫面
    {
        float h = Input.GetAxisRaw("Horizontal");   
        float v = Input.GetAxisRaw("Vertical");      // 獲取方向軸的輸入

        Move(h, v);
        Turning();
        DoAnimation(h, v);
    }

    private void DoAnimation(float h, float v)
    {
        bool isWalking = h != 0 || v != 0;
        animator.SetBool("IsWalking", isWalking);
    }

    private void Move(float h, float v)       
    {
        Vector3 movement = new Vector3();  // 兩個方向鍵同時按斜着走要算斜率
        movement.Set(h, 0f, v);
        movement = movement.normalized * Time.deltaTime * speed;     // 比喻:1秒顯示60FPS畫面
        playerRigidbody.MovePosition(transform.position + movement); // player的座標加上移動
    }

    private void Turning()
    {
        Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        if(Physics.Raycast(camRay, out RaycastHit floorHit, 100, floorMask))
        {
            Vector3 forward = floorHit.point - transform.position;
            forward.y = 0f;
            Quaternion lookQuaternion = Quaternion.LookRotation(forward);
            playerRigidbody.MoveRotation(lookQuaternion);
        }

        //Vector3 forward = enemyTransform.position - enemyTransform.position; // player和enemy的距離
        //Quaternion lookQuaternion = Quaternion.LookRotation(forward); // unity計算player對enemy的forward
        //playerRigidbody.MoveRotation(lookQuaternion); 
    }
}

 

p5添加player移動動畫

添加AnimationController拖拽到player上

在AC裏拖拽完成動畫的轉換


寫DoAnimation方法捕捉動畫 

效果

 p6攝像機跟隨角色

創建camera腳本拖拽給main camera

 

 

暫時可以穿模

p7怪物跟隨玩家

添加障礙,給player add component - physics - capsule collider,覆蓋player
給Zombunny也添加一個capsule collider

不穿模了

 

 打開window-ai-navigation,敵人可以自動尋路

給zombunny add component-nav mesh agent

 不會打圈的設定

 

換成上帝視角 

好了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章