Проблема в том, что вы используете смещение камеры (moveVector), чтобы определить, находится ли камера в ограничительной рамке. Вместо этого вы должны использовать положение камеры,
,gameObject.transform.Position
, или будущее положение камеры,
,gameObject.transform.position + moveVector
, , чтобы определить, находится ли он в ограничительной рамке или нет. Таким образом, измените ваш код следующим образом:
GameObject.FindObjectOfType<PlayerController>().room.bounds.Contains(camera.transform.position + moveVector)
Убедитесь, что ваша переменная 'room' имеет тип Collider в скрипте 'PlayerController',
var room = GetComponent<Collider>();
Я использовал бы обратную галочку ''.
let name1 = 'Geoffrey';
let msg1 = `Hello ${name1}`;
console.log(msg1); // 'Hello Geoffrey'
, Но если Вы не знаете name1
, когда Вы создаете msg1
.
Для exemple, если msg1
прибыл из API.
можно использовать:
let name2 = 'Geoffrey';
let msg2 = 'Hello ${name2}';
console.log(msg2); // 'Hello ${name2}'
const regexp = /\${([^{]+)}/g;
let result = msg2.replace(regexp, function(ignore, key){
return eval(key);
});
console.log(result); // 'Hello Geoffrey'
Это заменит ${name2}
его значением.
var hello = "foo";
var my_string ="I pity the";
console.log (my_string, привет)
До Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge, нет, это было невозможно в javascript. Вам пришлось бы прибегнуть к следующим способам:
var hello = "foo";
var my_string = "I pity the " + hello;
До Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge, нет. Хотя вы можете попробовать sprintf для JavaScript , чтобы пройти половину пути:
var hello = "foo";
var my_string = sprintf("I pity the %s", hello);
ну, вы можете сделать это, но это не esp general
'I pity the $fool'.replace('$fool', 'fool')
Вы можете легко написать функцию, которая делает это разумно, если вам действительно нужно
Если вы пытаетесь выполнить интерполяцию для микротемплинга, мне нравится Mustache.js для этой цели.