unity c#逃出房间编程,怎么才能在鼠标点击钥匙后才能打开门,钥匙代码为key,门为door,

unity c#逃出房间编程,怎么才能在鼠标点击钥匙后才能打开门,钥匙代码为key,门为door,,第1张

using UnityEngine;
using SystemCollections;
public class Key : MonoBehaviour {
Animator DoorAni;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
RaycastHit hit;
Ray ray = CameramainScreenPointToRay(InputmousePosition);
if (InputGetMouseButtonDown(0) && PhysicsRaycast(ray, out hit))
{
DoorAniSetBool("Door",true);
}
}
}
其中DoorAni是你门Door的动画状态机,这个是前提是你得有这个门开的Animtion

RaycastHit hit, 100mousePosition);/
if (Physics,那么就是,如果是指镜头顺延方向(也就是游戏画面钻向屏幕里的方向)0f)) {
ScreenPointToRay(Input, out hitmainRaycast(ray:
Ray ray = Camera那要看你怎么理解“前”这个方向了; 对射线相交点 hit 的处理
}
这个就是从屏幕向鼠标点击点的方向向前的射线

这样肯定不会一直跟随,因为你的navdestination = Enemytransformposition; 只有在你外层的几个if成立的时候执行一遍,这样怪物离开之后destination 不会获取怪物新的position,试试这样,在你的if(hittransformtag == "Enemy")成立的时候设置一个布尔变量flag = true;不成立flag = false(默认是false),然后再这几个if的外面加上if(flag){navdestination = Enemytransformposition;},能明白吗?不用我写一遍代码了吧!

if(InputGetMouseButtonDown(0)){
var ray:Ray = camScreenPointToRay(InputmousePosition);
var hit:RaycastHit;
if(PhysicsRaycast(ray,hit)){
if(hittransformname == gameObjecttransformname){
//自己逻辑
renderermaterialmainTexture = texture;
texturePlay ();
}
}
}
这样改其他两个就好了,不过前提是你这个脚本要放到点击的物体上,如果不放到点击的物体上,就需要获取点击的物体,然后f(hittransformname == gameObjecttransformname)换成f(hittransformname == objtransformname),obj就是你获取的点击的物体。

Unity3D鼠标拾取物体可以通过射线的方式获取鼠标坐标 通过物理将物体名字输出进行 *** 作。
function Update ()
{
if (InputGetMouseButton (0))
{
var ray = CameramainScreenPointToRay (InputmousePosition);
var hit : RaycastHit;
if (PhysicsRaycast (ray, hit))
{
DebugDrawLine (rayorigin, hitpoint);
print(hitcollidergameObjectname);
}
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13405891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存