code cho unity
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RaycastDetect : MonoBehaviour
public class RaycastDetect : MonoBehaviour
{
public LayerMask layerMask;
void Update()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
---------------------------------
free textures dowload tai day
https://polyhaven.com/textures
Làm Game Kinh dị 3D Bằng Unity : Phần 7 .Viết code và thêm âm thanh cho cánh cửa
---------------------------------------
turn on, off flashlight for player
How to Make a Door Open and Close in Unity3D
tệp DoorScript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorScript : MonoBehaviour
{
// Start is called before the first frame update
Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void OnTriggerEnter(Collider col)
{
anim.SetTrigger("OpenDoor"); // tên trigger này trùng tên khi tạo trigger trên tab animator
}
void OnTriggerExit(Collider col)
{
anim.enabled = true;
}
void pauseAnimationEvent()
{
anim.enabled = false;
}
}
lưu ý trong phần animator thì có 2 node là Idle và Open
state từ Idle -> Open thì không có Has Exit Time và có trigger open
còn ngược lại state từ Open ->Idle có Has Exit Time và không có trigger nào cả Thì nó mới hoạt động tốt
cửa có thêm Sphere Collider (mặc định của nó là Transform vaf Animator do ta vừa tạo thôi.
và nhớ tại 0.3s của animation OpenDoor ta thêm event sau đó tại cửa sổ bên phải inspector ta add Function chính là tên hàm pauseAnimationEvent() mà ta tạo trong DoorScript nếu không khi cửa mở ra , ta đi vào thì cửa tiếp tục animation là nó đóng vào gây khó khăn khi ta đi ra đi vào
-------------------------------------------------------------------------------------------------------------
chuyen dong vat the 3d
public float speed;
void FixUpdate()
{
Float step = Time.DeltaTime * speed;
gameObject.transform.position = new Vector3.MoveToward(gameObject.transform.position, Target.position, step);
}
code da test chuan roi
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class autodoor : MonoBehaviour
{
public Animator doorAnim;
void OnTriggerEnter(Collider col)
{
if (col.CompareTag("Player"))
{
doorAnim.SetTrigger("open"); // open is a name of trigger
}
}
void OnTriggerExit(Collider col)
{
if (col.CompareTag("Player"))
{
doorAnim.SetTrigger("close"); // close is a name of trigger
}
}
}
trong do scripts duoc dua vao cai canh cua chuyen dong len xuong (khong phai la parent cua canh cua )
viết code cho cửa ra vào chuẩn nhất
viết code để khi người chơi tương tác với cái thang (vất thể bất kỳ nào đó)
boxcollider nằm ở Player ta viết:
...// lưu ý you need to change "using UnityStandardAssets.Characters.FirstPerson;" by "using StarterAssets;".
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;
public Transform playerController;
bool inside = false;
public FirstPersonController player;
public float speed = 3f;
void Start()
{
player = GetComponent<FirstPersonController>();
inside = false;
}
void OnTriggerEnter(Collider col)
{
if(col.gameObject.Tag = "Ladder")
{
Debug,Log("Touching Ladder true");
Player.enabled = false;
inside = !inside;
}
}
void OnTriggerExit(Collider col)
{
if(col.gameObject.Tag = "Ladder")
{
Debug,Log("Touching Ladder false");
Player.enabled = true;
inside = !inside;
}
}
void Update()
{
if(inside == true && Input.GetKey("w"))
{
player.transform.position += Vector3.up / speed * Time.deltaTime;
}
if(inside == true && Input.GetKey("s"))
{
player.transform.position += Vector3.down / speed * Time.deltaTime;
}
if(inside == true && Input.GetKey("w")
{
sound.enabled = true;
sound.loop =true;
}
else
{
sound.enabled = false;
sound.loop = false;
}
}
code xong ta kéo scrips vào đối tượng FPSController
Sau đó ta kéo FPSController vào thuộc tính thuộc phần scripts sau khi đã kéo vào FPSController
muc Player Controller vào từ non(transform) thành FPSControlller
và Player từ non thành script FPSController
còn với cái thang ladder ta kéo rộng box collider của nó to ra hơn so với box mặc định của nó và check vào box is Trigger
Nếu player ở dưới 1 cầu thang có độ dốc thì nó có thể nhìn xuyên qua cầu thang đó để xử lý lỗi này ta thay clipping plan mặc định từ 0.3 thành 0.1 của player
cũng thuộc player field of view phần lớn của game ta đặt là 80 thay vì mặ định là 60
---------------------------------------------------------
new clip khi tạo animation là tạo 1 hoạt cảnh ví dụ clip : cửa mở , clip cửa đóng
để copy clip : Ctrl + C , để dán clip : Ctrl + V